package com.zstu.mall.service;

import com.zstu.mall.common.BaseService;
import com.zstu.mall.dao.ProductDao;
import com.zstu.mall.entity.Product;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;

import java.util.List;

/**
 * @author     : wuyc
 * @description: ProductService
 * @date       : Created in 2019/11/24
 */
public interface ProductService extends BaseService<Product, String, ProductDao>  {

    /**
     * 查询
     * @param id
     * @return
     */
    @Override
    Product get(String id);

    /**
     * 通过标题搜索商品
     *
     * @param name
     * @param pageable
     * @return
     */
    List<Product> findByNameIsLike(String name, Pageable pageable);

    /**
     * 查找热门、精选商品
     * 3热门,4精选,5轮播,6促销
     * @param status,pageable
     * @return
     */
    List<Product> findHotProduct(String status, Pageable pageable);

    /**
     * 查找最新商品
     * @param pageable
     * @return
     */
    List<Product> findNewProduct(Pageable pageable);

    /**
     * 查找所有商品
     * @param
     * @return
     */
    List<Product> findAll();

    /**
     * 根据分类查找商品
     * @param type
     * @param pageable
     * @return
     */
    List<Product> findByType(String type,Pageable pageable);

    /**
     * 根据活动查找商品
     * @param activityId
     * @param pageable
     * @return
     */
    List<Product> findByActivityId(String activityId,Pageable pageable);

    /**
     * 排序
     * @param sort
     * @param type
     * @param pageable
     * @return
     */
    List<Product> findByOrder(Sort sort, String type,Pageable pageable);

    /**
     * 剔除下架
     * @param products
     * @return
     */
    List<Product> findSoldOn(List<Product> products);

}
